1382D - Unmerge - CodeForces Solution


dp *1800

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 10;

#define pb push_back
#define me memset

int t;
int n;
int a[N];
vector<int> v;
int dp[N];

int main() {
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        me(dp, 0, sizeof(dp));
        v.clear();
        for (int i = 1; i <= 2 * n; ++i) {
            scanf("%d", &a[i]);
        }
        int mx = a[1];
        int pos = 1;
        for (int i = 2; i <= 2 * n; ++i) {
            if (a[i] > mx) {
                v.pb(i - pos);
                mx = a[i];
                pos = i;
            }
        }

        v.pb(2 * n + 1 - pos);
        dp[0] = 1;
        for (int i = 0; i < (int)v.size(); ++i) {
            for (int j = n; j >= v[i]; --j) {
                dp[j] += dp[j - v[i]];
            }
        }
        if (dp[n]) puts("YES");
        else puts("NO");

    }

    return 0;
}


Comments

Submit
0 Comments
More Questions

1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key
1705A - Mark the Photographer
1707A - Doremy's IQ
1706B - Making Towers
1325B - CopyCopyCopyCopyCopy
1649C - Weird Sum
1324B - Yet Another Palindrome Problem
525A - Vitaliy and Pie
879A - Borya's Diagnosis
1672B - I love AAAB
1673A - Subtle Substring Subtraction
1345A - Puzzle Pieces
711A - Bus to Udayland
779B - Weird Rounding
1703D - Double Strings
1704C - Virus
63A - Sinking Ship
1704B - Luke is a Foodie
298B - Sail
239A - Two Bags of Potatoes
1704E - Count Seconds